<?

//#################################################################################################################
//#################################  Otras Funciones  ###################################################
//#################################################################################################################

function descargaFichero($file,$nombre,$documento){

//First, see if the file exists
	if (!file_exists($file)) { die("<b>404 Fichero no encontrado!</b>"); }
	
	//Gather relevent info about file
	$len = filesize($file);
	$file_extension = strtolower(substr(strrchr($documento,"."),1));
	
	//This will set the Content-Type to the appropriate setting for the file
	switch( $file_extension ) {
		case "pdf": $ctype="application/pdf"; break;
		case "rtf":
		case "exe": $ctype="application/octet-stream"; break;
		case "zip": $ctype="application/zip"; break;
		case "doc": $ctype="application/msword"; break;
		case "xls": $ctype="application/vnd.ms-excel"; break;
		case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
		case "gif": $ctype="image/gif"; break;
		case "png": $ctype="image/png"; break;
		case "jpeg":
		case "jpg": $ctype="image/jpg"; break;
		case "mp3": $ctype="audio/mpeg"; break;
		case "wav": $ctype="audio/x-wav"; break;
		case "mpeg":
		case "mpg":
		case "mpe": $ctype="video/mpeg"; break;
		case "mov": $ctype="video/quicktime"; break;
		case "avi": $ctype="video/x-msvideo"; break;
		case "txt": $ctype="text/plain"; break;
				
		//The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
		case "php":
		case "htm":
		case "socios": die("<b>No puede ser usado para ficheros '". $file_extension ."'!</b>"); break;
		
		default: $ctype="application/force-download";
	}
	
	//Begin writing headers
	header("Pragma: public");
	header("Expires: 0");
	header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
	header("Cache-Control: public");
	header("Content-Description: File Transfer");
	
	//Use the switch-generated Content-Type
	header("Content-Type: $ctype; name=".$nombre."");
	
	//Force the download
	$header="Content-Disposition: attachment; filename=".$documento.";";
	header($header );
	header("Content-Transfer-Encoding: binary");
	header("Content-Length: ".$len);
	@readfile($file);
}

function redimension_imagen($img_original, $img_nuevo_ancho,$img_nuevo_alto)
{
	// Obtencion de las dimensiones originales
	$img_orig_size = getimagesize($img_original);
	$img_orig_ancho = $img_orig_size[0];
	$img_orig_alto = $img_orig_size[1];

	if(($img_orig_ancho>$img_nuevo_ancho) || ($img_orig_alto>$img_nuevo_alto))
	{
	 // Reescalamos teniendo en cuenta el aspecto.
	 // Primer caso reescalamos la x y vemos el resultado de la Y.
	 $xn1=$img_nuevo_ancho;
	 $yn1=intval(($img_nuevo_ancho*$img_orig_alto)/$img_orig_ancho);

	 // Segundo caso reescalamos la y y vemos el resultado de la X
	 $xn2=intval(($img_nuevo_alto*$img_orig_ancho)/$img_orig_alto);
	 $yn2=$img_nuevo_alto;

	 // Caso imposible
	$xn=$img_orig_ancho;
	$yn=$img_nuevo_alto;

	 // ï¿œ Cual caso se ajusta ?
	 if(($xn1<=$img_nuevo_ancho) && ($yn1<=$img_nuevo_alto))
	 	{
			$xn=$xn1;
			$yn=$yn1;
		}
	 if(($xn2<=$img_nuevo_ancho) && ($yn2<=$img_nuevo_alto))
	 	{
			$xn=$xn2;
			$yn=$yn2;
		}

		// Crea una imagen en memoria con las dimensiones nuevas.
		//$img_resized = ImageCreate($img_nuevo_ancho, $img_nuevo_alto);
		// Copia a esa imagen en memoria la imagen que esta en el fichero cambiandole el tamaï¿œo.
		//  nueva imagen,       fichero de entrada (jpeg) cc or y dest    nuevo tamaï¿œo tamaï¿œo original
		//imagecopyresized($img_resized, ImageCreateFromJpeg($img_original), 0 , 0, 0 , 0, $img_nuevo_ancho, $img_nuevo_alto, $img_orig_ancho,$img_orig_alto);
		$img_resized = imagecreatetruecolor($xn, $yn);
		imagecopyresampled($img_resized, ImageCreateFromJpeg($img_original), 0 , 0 ,0 , 0, $xn, $yn, $img_orig_ancho, $img_orig_alto);

		// Grabacion de la imagen en el servidor
		unlink ("$img_original");
		Imagejpeg($img_resized, $img_original);



		// Destruccion de los recursos.
		ImageDestroy($img_resized);
	}
}

function resize_bytes($size){
   $count = 0;
   $format = array("Bytes","KB","MB","GB","TB","PB","EB","ZB","YB");
   while(($size/1024)>1 && $count<8)
   {
       $size=$size/1024;
       $count++;
   }
   $return = number_format($size,0,'','.')." ".$format[$count];
   return $return;
}

function tipo_archivo($archivo){
	$vector = array();
	$vector = explode(".",$archivo);
	$tipo_archivo = strtolower($vector[count($vector)-1]);

	switch($tipo_archivo)	{
		case 'pdf':
		case 'doc':
		case 'rtf':
		case 'xls':
		case 'txt':{ return $tipo_archivo; break; }		
		default:	{ return "default";	break;}				
	}	
}

function tipo_archivo_peq($archivo){
	$vector = array();
	$vector = explode(".",$archivo);
	$tipo_archivo = strtolower($vector[count($vector)-1]);

	switch($tipo_archivo)	{
		case 'pdf':
		case 'xls':		
		case 'zip':{ return $tipo_archivo; break; }		
		case 'jpg':
		case 'gif':
		case 'png':	{ return "image"; break;}		
		default:	{ return "default";	break;}				
	}	
}

function descarga_fichero($file,$nombre,$documento){

//First, see if the file exists
	if (!file_exists($file)) { die("<b>404 Fichero no encontrado!</b>"); }
	
	//Gather relevent info about file
	$len = filesize($file);
	$file_extension = strtolower(substr(strrchr($documento,"."),1));
	
	//This will set the Content-Type to the appropriate setting for the file
	switch( $file_extension ) {
		case "pdf": $ctype="application/pdf"; break;
		case "exe": $ctype="application/octet-stream"; break;
		case "zip": $ctype="application/zip"; break;
		case "doc": $ctype="application/msword"; break;
		case "xls": $ctype="application/vnd.ms-excel"; break;
		case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
		case "gif": $ctype="image/gif"; break;
		case "png": $ctype="image/png"; break;
		case "jpeg":
		case "jpg": $ctype="image/jpg"; break;
		case "mp3": $ctype="audio/mpeg"; break;
		case "wav": $ctype="audio/x-wav"; break;
		case "mpeg":
		case "mpg":
		case "mpe": $ctype="video/mpeg"; break;
		case "mov": $ctype="video/quicktime"; break;
		case "avi": $ctype="video/x-msvideo"; break;
		case "txt": $ctype="text/plain"; break;
		case "odt": $ctype="application/vnd.oasis.opendocument.text"; break;
				
		//The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
		case "php":
		case "htm":
		case "socios": die("<b>No puede ser usado para ficheros '". $file_extension ."'!</b>"); break;
		
		default: $ctype="application/force-download";
	}
	
	//Begin writing headers
	header("Pragma: public");
	header("Expires: 0");
	header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
	header("Cache-Control: public");
	header("Content-Description: File Transfer");
	
	//Use the switch-generated Content-Type
	header("Content-Type: $ctype; name=".$nombre."");
	
	//Force the download
	$header="Content-Disposition: attachment; filename=".$documento.";";
	header($header );
	header("Content-Transfer-Encoding: binary");
	header("Content-Length: ".$len);
	@readfile($file);
}


//#################################################################################################################
//#################################################  LOG  ###################################################
//#################################################################################################################

function auditoria($sql){

	$vector = array();
	$vector["id_log"]=maxid("log","id_log");
	$vector["fecha"]=date("Y-m-d H:i:s");

	if(isset($_SESSION["obj_sesion"]))
		$vector["id_usuario"]=$_SESSION["obj_sesion"]->getIdUsuario();

	$vector["sentencia"]=utf8_encode($sql);

	insertaBD("log",$vector);
}

//#################################################################################################################
//#################################################  EMAIL  ###################################################
//#################################################################################################################

function enviar_correo($correo,$asunto,$texto){
	global $_LOCALHOST;
	
	$cabeceras="From: B@rros - Ayuntamiento de Almendralejo <noreply@almendralejo.es>\n";
	$cabeceras.="X-Mailer: PHP\n";
	$cabeceras.="X-Priority: 1\n";
	$cabeceras.="Content-Type: text/plain; charset=iso-8859-1\n";
	
	/*$mensaje = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//ES"
	"http://www.w3.org/TR/html4/loose.dtd">
	<html>
		<head>
			<title>Ayuntamiento de Almendralejo</title>
			<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
		</head>		
		<body>';
			
			$mensaje.= '<table width="100%" border="0" cellspacing="5">';
			$mensaje.= "<tr>";
			$mensaje.= "<td valign='top'>".$texto."</td>";
			$mensaje.= "</tr>";
			$mensaje.= '</table>';
	$mensaje.= '</body>
	</html>';*/
	return mail($correo,$asunto,$texto,$cabeceras);
}


function enviar_correoHTML($correo,$asunto,$texto){
	global $_LOCALHOST;

	$cabeceras="From: B@rros - Ayuntamiento de Almendralejo <noreply@almendralejo.es>\n";
	$cabeceras.="X-Mailer: PHP\n";
	$cabeceras.="X-Priority: 1\n";
	$cabeceras.="Content-Type: text/html; charset=UTF-8\n";
	
	/*$mensaje = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//ES"
	"http://www.w3.org/TR/html4/loose.dtd">
	<html>
		<head>
			<title>Ayuntamiento de Almendralejo</title>
			<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
		</head>		
		<body>';
			
			$mensaje.= '<table width="100%" border="0" cellspacing="5">';
			$mensaje.= "<tr>";
			$mensaje.= "<td valign='top'>".$texto."</td>";
			$mensaje.= "</tr>";
			$mensaje.= '</table>';
	$mensaje.= '</body>
	</html>';*/
	mail($correo,$asunto,$texto,$cabeceras);
}


//#################################################################################################################
//########################################## PROVINCIAS Y POBLACIONES  ############################################
//#################################################################################################################

function provincias($id_provincia,$id_poblacion){

	$prov = consultaMultiple("provincia","","ORDER BY nombre");

	echo "<select name='id_provincia' id='id_provincia' onChange='javascript:mostrarPoblaciones(this.value);'>";
		echo "<option value='0'>Seleccione...</option>";
	for($k=0;$k<count($prov);$k++){
		echo "<option value='".$prov[$k]["id_provincia"]."'";
		if($id_provincia==$prov[$k]["id_provincia"]) echo "selected";
		echo ">".utf8_encode($prov[$k]["nombre"])."</option>";
	}
	echo "</select><div id='cont_poblaciones'>";
	if($id_poblacion!="")
		poblaciones($id_provincia,$id_poblacion);
	echo "</div>";
}

function poblaciones($id_provincia,$id_poblacion=""){

	$prov = consultaMultiple("poblacion","id_provincia=".$id_provincia,"ORDER BY nombre");

	echo "<select name='id_poblacion' id='id_poblacion'>";
		echo "<option value='0'>Seleccione...</option>";
	for($k=0;$k<count($prov);$k++){
		echo "<option value='".$prov[$k]["id_poblacion"]."'";
		if($id_poblacion==$prov[$k]["id_poblacion"]) echo "selected";
		echo ">".utf8_encode($prov[$k]["nombre"])."</option>";
	}
	echo "</select>";
}

function pasar_utf8_array(&$texto) //Pasa cualquier array a utf8.
{
	if(!empty($texto)) 
		foreach ($texto as $key => $value) 
		{
			if(is_array($texto[$key]))
			{
				pasar_utf8_array($texto[$key]);
			}
			else
			{
				if(!is_numeric($texto[$key]))
				{
					$texto[$key] = utf8_encode($texto[$key]);
				}
			}
		}
}

function descodificar_utf8_array(&$texto) //Pasa cualquier array a utf8.
{
	if(!empty($texto)) 
		foreach ($texto as $key => $value) 
		{
			if(is_array($texto[$key]))
			{
				descodificar_utf8_array($texto[$key]);
			}
			else
			{
				if(!is_numeric($texto[$key]))
				{
					$texto[$key] = utf8_decode($texto[$key]);
				}
			}
		}
}


function conseguir_id_poblacion($id_poblacion) //Pasandole el id_poblacion devuelve los id de pais, comunidad, provincia (Con estos nombres) en array
{
	if($id_poblacion!= 0 && is_numeric($id_poblacion))
	{
		$tabla= "poblacion, provincia, comunidad";
		$where = "poblacion.id_provincia= provincia.id_provincia AND provincia.id_comunidad= comunidad.id_comunidad AND poblacion.id_poblacion=".$id_poblacion;
		$select = "comunidad.id_pais as pais,comunidad.id_comunidad as comunidad, provincia.id_provincia as provincia" ;
		$vector = consultaMultiple($tabla,$where,"",$select);
		return $vector;
	}
}

function calcular_edad($edad)
{
	$dia=date("j");
	$mes=date("n");
	$anno=date("Y");
	$dia_nac=substr($edad, 0, 2);
	$mes_nac=substr($edad, 3, 2);
	$anno_nac=substr($edad, 6, 4);
	if($mes_nac>$mes){
		$calc_edad= $anno-$anno_nac-1;
	}else{
		if($mes==$mes_nac AND $dia_nac>$dia){
			$calc_edad= $anno-$anno_nac-1;
		}else{
			$calc_edad= $anno-$anno_nac;
		}
	}
	return $calc_edad;
}


function saber_tipo_mesas($id_user) //Me devuelve tipo y mesas 
{
	$usuario = consultaMultiple('seguridad_usuarios su INNER JOIN empresa_mesa em ON em.id_empresa = su.id_empresa','su.id_usuario = '.$id_user,'','em.id_mesa AS mesa, em.id_tipo AS tipo');
	return $usuario;
}

function saber_tipo_mesa($id_user,$id_mesa) //Me devuelve de una mesa el tipo de usuario
{
	$usuario = consultaSimple('seguridad_usuarios su INNER JOIN empresa_mesa em ON em.id_empresa = su.id_empresa','em.id_mesa = '.$id_mesa.' AND su.id_usuario = '.$id_user,'','em.id_tipo AS tipo');
	return $usuario['tipo'];
}

/*function ruta_seguida($visible,$enlaces)   //Esta parte nos hara la ruta pasandole dos arrays. Clase de los <a> 'ruta_enlace'
{                                          //$visible = Es el array con los nombres visibles
	$pub = "<div id='ruta'>";                             //$enalces = Son los enlaces de los nombres visibles
	for($x=0;$x<count($visible);$x++)
	{
		if($pub != "") {$pub .= " &shy;&shy;&gt; ";}
		$pub .= " <a href='".$enlaces[$x]."' class='ruta_enlace'>".$visible[$x]."</a> ";
	}
	return $pub . '</div>';
}*/


function exportLog(){

	$data = consultaMultiple("log","","ORDER BY id_log");

	$file = fopen("log/".date("Ymd").time(),"wb");

	fwrite($file,"ID_LOG#ID_USUARIO#FECHA#CONSULTA");
	for($i=0;$i<count($data);$i++){
		fwrite($file,$data[$i]["id_log"]."#".$data[$i]["id_usuario"]."#".$data[$i]["fecha"]."#".$data[$i]["sql"]."\n");
	}
	fclose($file);

	//borraBD("log");
}

function formar_select_jqgrid($campos,$traductor)
{
	$select = "";
	foreach($campos as $key => $value)
	{
		$select.=", ".$traductor[$key]." AS ".$value;
	}
	return $select;
}

function formar_where_jqgrid($campos,$traductor,$valores)
{
	foreach($campos as $key => $value)
	{
		if(isset($valores[$value]))
		{
			$consulta .= espacios_jqgrid($valores[$value],$traductor[$key]);
		}
	}
	return $consulta;
}



function espacios_jqgrid($busqueda,$traductor)
{
	$consulta = "";
	if(substr_count($busqueda," ")!=0)
		$palabras = split(' ',$busqueda);
	else
		$palabras = array($busqueda);
	if(!is_array($traductor))
	{
		for($x = 0;$x<count($palabras);$x++)
		{
			$palabras[$x] = trim($palabras[$x]);
			$consulta .= " AND " .$traductor." LIKE '%".$palabras[$x]."%'";
		}
	}
	else
	{
		$consulta .= " AND ((";
		foreach($traductor as $key => $value)
		{
			if($key != 0){$consulta .=" OR (";}
			foreach($palabras as $key_p => $value_p)
			{
				if($key_p!=0){$consulta .=" OR ";}
				$value_p = trim($value_p);
				$consulta .= $value." LIKE '%".$value_p."%'";
			}
			$consulta.= ") ";
		}
		$consulta.=")";
	}
	return $consulta;
}

function transpasar_archivo_chat($id)  //Traspasa el archivo de chat a una carpeta de solo lectura
{
	$carpeta = "chat/temp/";
	$archivo = "Chat_".$id.".txt";
	$carpeta_dest = "archivos_emesa/chat/";
	$archivo_dest="";
	return transpasar_archivo($archivo,$carpeta,$carpeta_dest);
}

function transpasar_archivo_stream($id) //Traspasa el archivo de chat a una carpeta de solo lectura
{
	$carpeta = "/usr/local/red5/webapps/lonjared5/stream/mesa".$_SESSION["obj_sesion"]->getMesa()."/lonjared/";
	$archivo = "mesa".$_SESSION["obj_sesion"]->getMesa().".flv";
	$carpeta_dest = "archivos_emesa/audio/";
	$archivo_destino = "audio_".$id.".flv";
	return transpasar_archivo_red5($archivo,$carpeta,$carpeta_dest,$archivo_destino);
}

function transpasar_archivo($archivo,$carpeta,$carpeta_destino,$archivo_dest = "") //Transpasa el archivo a donde digamos
{
	if($archivo_dest == "") $archivo_dest=$archivo;
	if(file_exists($carpeta.$archivo))
	{
		copy($carpeta.$archivo,$carpeta_dest.$archivo_dest);
		if(file_exists($carpeta_dest.$archivo_dest))
		{
			chmod($carpeta_dest.$archivo_dest,0444);
			unlink($carpeta.$archivo);
			return $carpeta_dest.$archivo_dest;
		}
		else
			return '';
	}
	else
		return '';
}

function transpasar_archivo_red5($archivo,$carpeta,$carpeta_destino,$archivo_dest = "")
{
	if($archivo_dest=="") $archivo_dest=$archivo;
	exec('mv -u "'.$carpeta.$archivo.'" "/var/www/'.$carpeta_destino.$archivo_dest.'"');
	return $carpeta.$archivo;
}

function cerrar_auto_cotizacion($id_mesa,$id_emesa)
{
	
}

function RestarHoras($horaini,$horafin)
{
	$horai=substr($horaini,0,2);
	$mini=substr($horaini,3,2);
	$segi=0;

	$horaf=substr($horafin,0,2);
	$minf=substr($horafin,3,2);
	$segf=substr($horafin,6,2);

	$ini=((($horai*60)*60)+($mini*60)+$segi);
	$fin=((($horaf*60)*60)+($minf*60)+$segf);

	$dif=$fin-$ini;

	$difh=floor($dif/3600);
	$difm=floor(($dif-($difh*3600))/60);
	$difs=$dif-($difm*60)-($difh*3600);
	return date("H:i:s",mktime($difh,$difm,$difs));
}

function sumar_cuatro_horas($horaini)
{
	$horai=substr($horaini,0,2);
	$horai = (int)$horai + 4;
	$mini=substr($horaini,3,2);
	return date("H:i:s",mktime($horai,$mini,0));
}
?>
